package cn.qayy.service;

import java.util.List;
import java.util.Map;

import cn.qayy.po.User;

public interface IUserService {
    /***
     * 用户登录
     * @param params
     * @return
     */
    User loginUser(Map<String, Object> params);

    void updatePassword(Map<String, Object> params);

    /**
     * 传入对象保存
     *
     * @param user
     * @return
     */
    int insert(User user);

    /**
     * 传入对象选择性的保存，根据对象的属性是否为null，选择性的保存
     *
     * @param user
     * @return
     */
    int insertSelective(User user);

    /**
     * 批量新增
     *
     * @param users
     */
    void insertAll(List<User> users);

    /**
     * 删除,主键id, 如果主键的值为null,删除会失败
     *
     * @param id
     */
    void deleteById(String id);

    /**
     * 按条件删除
     *
     * @param criteriaUser
     */
    void delete(User criteriaUser);

    /**
     * 删除全部
     */
    void deleteAll();

    /**
     * 选择性的更新对象
     *
     * @param user
     * @return
     */
    int updateByIdSelective(User user);

    /**
     * 更新对象
     *
     * @param user
     * @return
     */
    int updateById(User user);

    /**
     * 更新多条
     *
     * @param criteriaUser
     * @param user
     */
    void update(User criteriaUser, User user);

    /***
     * 通过主键id查询
     * @param id
     * @return
     */
    User selectById(Integer id);

    /**
     * 查询全部
     *
     * @return
     */
    List<User> selectAll();

    /**
     * 按条件查询 分页查询
     *
     * @param criteriaUser 条件
     * @param skip         忽略
     * @param limit        限制个数
     * @return
     */
    List<User> select(User criteriaUser, int skip, int limit);

    /**
     * 根据条件查询出来后 在去修改
     *
     * @param criteriaUser 查询条件
     * @param updateUser   修改的值对象
     * @return
     */
    User selectAndModify(User criteriaUser, User updateUser);

    /**
     * 查询出来后 删除
     *
     * @param criteriaUser
     * @return
     */
    User selectAndRemove(User criteriaUser);

    /**
     * count 计数
     *
     * @param criteriaUser 条件
     * @return
     */
    long count(User criteriaUser);

    Integer isExistsFromBasicLib(Map<String, Object> user_name);
}
